/**
 * 
 */
package com.mbengue.corp.apr.ra.dao;

import java.util.List;

import org.hibernate.HibernateException;

import com.mbengue.corp.apr.ra.core.Article;
import com.mbengue.corp.apr.ra.core.Membre;

/**
 * Gere l'ajout, la modification, la suppression et la recherche d'article
 * 
 * @author MMB11447
 *
 */
public interface ArticleDao {

	/**
	 * Ajoute l'article donne en entree dans la base de donnees
	 * 
	 * @param article {@link Article} a ajouter
	 * @throws HibernateException
	 */
	public void ajouterArticle(Article article) throws HibernateException;
	
	/**
	 * Retrouve l'article dont le titre est donne en entree
	 * 
	 * @param titre {@link String} de l'article a retrouver
	 * @return {@link Article} correspondant au titre
	 * @throws HibernateException
	 */
	public Article trouverArticle(String titre) throws HibernateException;
	
	/**
	 * Met a jour l'article dans la base de donnees
	 * 
	 * @param article {@link Article} a mettre a jour
	 * @throws HibernateException
	 */
	public void modifierArticle(Article article) throws HibernateException;
	
	/**
	 * Retourne tous les articles de la base de donnees
	 * 
	 * @return {@link List} d'article
	 * @throws HibernateException
	 */
	public List<Article> tousLesArticles() throws HibernateException;
	
	/**
	 * Retourne tous les articles dont l'auteur est donne en entree
	 * 
	 * @param membre {@link Membre} auteur des articles
	 * @return {@link List} d'article de l'auteur
	 * @throws HibernateException
	 */
	public List<Article> lesArticlesD1Auteur(Membre membre) throws HibernateException;
	
	/**
	 * Retourne les dix articles les plus recents
	 * 
	 * @return {@link List} d'article
	 * @throws HibernateException
	 */
	public List<Article> lesArticlesRecents() throws HibernateException;
	
	/**
	 * Retourne tous les articles qui sont des proces verbaux
	 * 
	 * @return {@link List} de proces verbaux
	 * @throws HibernateException
	 */
	public List<Article> tousLesPvDeReunion() throws HibernateException;
}
